<!-- 
    改变promise状态和指定的回调谁先谁后
    1）都有可能,正常情况下，是先指定回调在改变状态，但也可以先改变装状态在指定回调
    2）如何先改变状态在指定回调
      1.在执行器中调用resolve()/reject()
      2.延迟更长的时间才调用then()
    3)什么时候得到数据
      1.如果先指定的回调，那当状态发生改变时，会调函数就会调用，得到数据
      2.如果先改变的状态，那当指定的回调时，回调函数就会调用，得到数据
 -->
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //正常写方法：先指定成功和失败的回调，然后改变了状态
        // let p = new Promise((resolve, reject) => {
        //     setTimeout(() => {
        //         resolve(1)
        //     }, 1000)
        // })

        // p.then(
        //     values => console.log('成功的回调用了1', values),
        //     reason => console.log('失败的回调用了2', reason),
        // )

        //先改变状态后指定回调
        let p = new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve(1)
            }, 1000)
        })
        setTimeout(() => {
            p.then(
                values => console.log('成功的回调用了1', values),
                reason => console.log('失败的回调用了2', reason),
            )
        }, 4000)


    </script>
</body>

</html>